struct _ZSt15_List_node_base {
    struct _ZSt15_List_node_base* _M_next;
    struct _ZSt15_List_node_base* _M_prev;
};

#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif
void _ZNSt15_List_node_base4hookEPS_(struct _ZSt15_List_node_base* _list, struct _ZSt15_List_node_base* _new);
void __cxa_vec_ctor(void *array_address, size_t element_count, size_t element_size, void (*constructor) (void *), void (*destructor) (void *));
void * __cxa_vec_new2(size_t element_count, size_t element_size, size_t padding_size, void (*constructor) (void *), void (*destructor) (void *), void *(*alloc) (size_t), 
	void (*dealloc) (void *));
#ifdef __cplusplus
}
#endif


void _ZNSt15_List_node_base4hookEPS_(struct _ZSt15_List_node_base* _list, struct _ZSt15_List_node_base* _new)
{
    _list->_M_next = _new;
    _list->_M_prev = _new->_M_prev;
    _new->_M_prev->_M_next = _list;
    _new->_M_prev = _list;
}

void __cxa_vec_ctor(void *array_address, size_t element_count, size_t element_size, void (*constructor) (void *), void (*destructor) (void *))
{
    size_t ix = 0;
    char *ptr = (char*)array_address;

    if (constructor)
       for (; ix != element_count; ix++, ptr += element_size)
          constructor(ptr);
}

void * __cxa_vec_new2(size_t element_count, size_t element_size, size_t padding_size, void (*constructor) (void *), void (*destructor) (void *), void *(*alloc) (size_t), 
	void (*dealloc) (void *))
{
    void* ptr = malloc(element_count*element_size);
    __cxa_vec_ctor(ptr,element_count,element_size,constructor,destructor);
    return ptr;
}





